package com.ce.pms.charge.dao;

import java.util.List;
import java.util.Map;

import com.ce.pms.base.dao.IPmsBaseDao;
import com.ce.pms.charge.model.AbstractStaVersion;
import com.ce.pms.charge.model.ChargeStaDomain;
import com.sitechasia.webx.core.support.Page;

public interface IChargeStaDao extends IPmsBaseDao<ChargeStaDomain> {

	/**
	 * 方法描述: 查询所有的收费标准版本以及其对应的有效收费标准版本
	 *
	 * @author 胡煦 Create on:2008-8-18
	 * @param
	 * @return List<AbstractStaVersion> Edit author: Edit on: 修改原因：
	 */
	public List<Object[]> queryChargeSatVersionAnd();
	/**
	 * 方法描述: 查询所有当前有效的收费标准版本
	 *
	 * @author 胡煦 Create on:2008-8-18
	 * @param
	 * @return List<AbstractStaVersion> Edit author: Edit on: 修改原因：
	 */
	public List<AbstractStaVersion> queryAllChargeSatVersion();
	/**
	 * 方法描述: 查询所有的收费标准版本
	 *
	 * @author 胡煦 Create on:2008-8-18
	 * @param
	 * @return List<AbstractStaVersion> Edit author: Edit on: 修改原因：
	 */
	public List<AbstractStaVersion> queryAllChargeSatVersionBy();
	/**
	 * 方法描述: 查询某个收费项目下所有收费标准
	 *
	 * @author 胡煦 Create on:2008-8-18
	 * @param chargeItemId
	 * @return List<ChargeStaVO> Edit author: Edit on: 修改原因：
	 */
	public List<ChargeStaDomain> queryAllChargeSatBy(Long chargeItemId);
	/**
	 * 方法描述: 分页查询收费项目列表
	 * @author 胡煦
	 * Create on:2008-8-1
	 * @param chargeItemId,pageNo,pageSize
	 * @return Page
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public Page queryChargeSatByPage(Long chargeItemId,int pageNo,int pageSize);
	/**
	 * 方法描述: 根据收费标准名称查询记录数
	 *  注：新建判断chargeStaName的唯一性时，chargeStaId为null；修改判断chargeStaName的唯一性时，则需要传入修改前的chargeStaId<br>
	 * @author 胡煦
	 * Create on:2008-8-1
	 * @param chargeStaName
	 * @return chargeStaId
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public Long checkChargeStaNameIsOnly(String chargeStaName,Long chargeStaId);
	/**
	 * 方法描述: 根据收费标准ID查询当前收费标准版本
	 * @author 胡煦
	 * Create on:2008-8-15
	 * @param chargeStaId
	 * @return AbstractStaVersion
	 * Edit author:
	 * Edit on:
	 * 修改原因：
	 */
	public AbstractStaVersion queryCVersionByChargeStaId(Long chargeStaId);

	/**
	 * 功能描述:取出所有收费标准版本，一个项目仅取出一个版本。返回值:key 收费项目ID，value 收费版本<br>
	 * 注：本方法仅供生成收费通知单用。<br>
	 * @return<br>
	 * Create author:罗军林<br>
	 * Create on:2008-9-22<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public Map<Long,AbstractStaVersion> queryVersionByChargeItem();

	/**
	 * 功能描述:根据标准的名称，查询固定收费项目的有有效收费标准及价格<br>
	 * @param <br>
	 * @return<br>
	 *
	 * Create author:xuhaidui<br>
	 * Create on:2009-1-5<br>
	 * Edit author:<br>
	 * Edit on:<br>
	 * Why:<br>
	 */
	public List queryChargeSelectList(String chargeStaName);
}
